# 作业要求:
# - （1）将上述的CRUD操作都举例重复一遍.
# - （2） 自己做一张 4X4 的表格, 表示当前接口是否可用.

# (2)  4X4 表格
# | Type  | 增加    | 检索     | 更新    | 删除   |
# | :---: | :----: | :------: | :----: | :----: |
# | List  |   ✓    |    ✓     |   ✓    |   ✓    |
# | Tuple |   ✘    |    ✓     |   ✘    |   ✘    |
# | Dict  |   ✓    |    ✓     |   ✓    |   ✓    |
# |  Set  |   ✓    |    ✘     |   ✓    |   ✓    |

# (1) CRUD 操作
# list 的增加
lst = list()     # 创建一个空列表 也可以 lst = [] 来创建
lst.append(1)    # 在列表中增加一个元素 1 来测试列表的增加

# list 的索引
lst1 = [1, 2, 3, 4, 5]   # 创建一个里面有 5 个元素的列表
first = lst1[0]
print(first)             # 取出列表中的第一个元素 并打印

# list 的切片
part_lst1 = lst1[1: 3]   # 取出列表的第 1 到 3 个元素, 不包括第 3 个元素
print(part_lst1)

# list 的更新
lst2 = ['a', 'b', 'c', 'd', 'e']  # 创建一个里面有 5 个元素的列表
lst2[2] = 'ccc'          # 将列表的第三个元素改为 ccc
print(lst2)

# list 的删除
lst3 = ['apple', 'orange', 'banana', 'dog', 666]  # 创建里面有 5 个元素的列表
last_one = lst3.pop()    # 删除列表中的最后一个元素
print(last_one)

ret = lst3.remove('dog')  # 指定删除列表中的某个元素 remove 操作无返回
print(ret)
print(lst3)

# tuple 的索引
tup = (1, 2, 3, 'apple')  # 创建一个有 4 个元素的元组
print(tup[3])             # 取出其中的第三个元素

# dict 的增加
my_dict = dict()     # 创建一个空字典 或者使用 my_dict = {}
my_dict['name'] = '龟叔'     # 向字典中增加数据
my_dict['hobby'] = 'python'
print(dict)

# dict 的索引
name = my_dict.get("name")  # 拿到字典中 key 为 name 对应的值
age = my_dict.get("age")   # 使用 get 对于字典中不存在的 key 返回 None, 若写为 my_dict['age'] 会因不存在报错

# dict 的修改
my_dict.update({'name': "Guido", 'age': "保密"})
print(my_dict)     # 若 key 已经存在，例如已经存在 'name', 则更新 'name' 对应的值。若 key 不存在, 例如不存在 'age', 则新增 'age': "保密" 这一键值对

# dict 的删除
age_value = my_dict.pop("age")   # 输入键 返回该键对应的值 并将该键值对从字段中删除
print(age_value)
print(my_dict)

item = my_dict.popitem()    # 删除字典中最后一对键和值 并将其以 (键, 值) 元组的形式返回
print(item)

# set 的增加
my_set = {1, 2, 'python', 'java', 'js', 'go'}
my_set.add('php')
print(my_set)

# set 不支持索引 支持 in 操作, 即判断元素在 set 中是否存在
python_is_exist = 'python' in my_set
print(python_is_exist)

c_is_exist = 'C' in my_set
print(c_is_exist)

# set 的更新
my_set.add(666)
print(my_set)

# set 的删除
my_set.remove(1)
print(my_set)
